package com.itany.corejava.code07_面向对象.bms;

import java.util.Scanner;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年11月08日 9:10
 */
public class Start {
    private  Scanner sc=new Scanner(System.in);
    public static void main(String[] args) {
        Start start=new Start();
        start.showMenu();
    }
    public void showMenu(){
        System.out.println("-------------------欢迎进入银行管理系统------------------");
        System.out.print("请选择服务的功能(1.开户 2.登录):");
        int choice=sc.nextInt();
        switch (choice){
            case 1:
                register();
                break;
            case 2:
                login();
                break;
        }
    }

    //开户请选择账户类型
    public void register(){
        System.out.print("请选择开户的账户类型(1.储蓄账户 2.信用账户 3.贷款的储蓄用户 4.贷款的信用账户):");
        int choice=sc.nextInt();
        Account account=null;
        switch (choice){
            case 1:
                account=new SavingAccount();
                break;
            case 2:
                account=new CreditAccount();
                break;
            case 3:
                account=new LoanSavingAccount();
                break;
            case 4:
                account=new LoanCreditAccount();
                break;
            default:
                System.out.println("您输入有误，请重新输入");
                register();
        }

        //输入用户信息
        System.out.print("请输入用户姓名:");
        String name=sc.next();
        account.setName(name);

        //密码需要用户输入2次
        // 如果两次输入不一致，则提示用户重新输入

        while(true){
            System.out.print("请输入密码:");
            String password=sc.next();
            System.out.print("请再次输入密码:");
            String rePassword=sc.next();

            //判断两次输入的密码是否一致
            if(password.equals(rePassword)){
                account.setPassword(password);
                break;
            }else{
                System.out.println("两次密码输入的是不一致，请重新输入!");
            }

        }

        System.out.print("请输入您的身份证号:");
        String personId=sc.next();
        account.setPersonId(personId);

        System.out.print("请输入您的手机号:");
        String phone=sc.next();
        account.setPhone(phone);

        //开户的时候，账户余额为0
        // 如果是信用账户，设置可透支额度
        if(account instanceof CreditAccount ){
            //说明可以向下转型。说明当前用户是一个信用账户或者信用的贷款信用账户
            CreditAccount creditAccount=(CreditAccount)account;
            System.out.print("请输入可透支的额度:");
            double limit=sc.nextDouble();
            creditAccount.setLimit(limit);

        }

        boolean flag=Bank.register(account);
        Account[] aa=Bank.accounts;

        if(flag){

            //成功
            System.out.println("恭喜您，开户成功，您的账号为:"+account.getId());
        }else{
            System.out.println("错误，对不起，开户失败!");
        }

        //开户完成后返回到主菜单继续开户或者是登录
        showMenu();

    }

    //登录
    public void login(){
        //输入账号编号
        System.out.print("请输入账号编号:");
        int id=sc.nextInt();
        //请输入账号密码
        System.out.print("请输入账号密码:");
        String password=sc.next();
        Account account=Bank.login(id,password);
        if(account!=null){//说明账号和密码是正确的
            System.out.println("登录成功");
            AccountMenu accountMenu=new AccountMenu(account);//
            accountMenu.showMainMenu();

        }else{//账户或者密码有误
            System.out.println("账号或者密码有误");
            showMenu();
        }

    }


}
